<!DOCTYPE html>
<html lang="en">

  <head>
    <meta charset="UTF-8">
    <title>05_构造函数+原型的组合模式</title>
  </head>

  <body>
    <!--
    方式六: 构造函数+原型的组合模式
    * 套路: 自定义构造函数, 属性在函数中初始化, 方法添加到原型上
    * 适用场景: 需要创建多个类型确定的对象
    -->
    <script type="text/javascript">
      // 解决的方法非常简单：
      // 1.只在构造函数中写属性 
      function Person(name, age, gender) {
        this.name = name;
        this.age = age;
        this.gender = gender
      }
      // 2.在原型对象上面写方法
      Person.prototype.sayHi = function () {
        console.log(`大家好，我叫${this.name},今年${this.age}岁,是一个${this.gender}生`)
      }
      Person.prototype.doHomework = function () {}
      let p1 = new Person('狗蛋', 16, '男');
      p1.sayHi();
      let p2 = new Person('翠花', 15, '女');
      p2.sayHi()
      // 证明 prototype有没有解决构造函数内存浪费的问题    
      console.log(p1.sayHi === p2.sayHi); //true
    </script>
  </body>

</html>